Date.prototype.format = function(format) {
  format = format || 'yyyy-MM-dd HH:mm:ss';
  var o = {
    'M+': this.getMonth() + 1, //month
    'd+': this.getDate(), //day
    'H+': this.getHours(), //hour
    'm+': this.getMinutes(), //minute
    's+': this.getSeconds(), //second
    'q+': Math.floor((this.getMonth() + 3) / 3), //quarter
    S: this.getMilliseconds() //millisecond
  };

  if (/(y+)/.test(format)) {
    format = format.replace(
      RegExp.$1,
      (this.getFullYear() + '').substr(4 - RegExp.$1.length)
    );
  }

  for (var k in o) {
    if (new RegExp('(' + k + ')').test(format)) {
      format = format.replace(
        RegExp.$1,
        RegExp.$1.length == 1 ? o[k] : ('00' + o[k]).substr(('' + o[k]).length)
      );
    }
  }
  return format;
};
//String

String.prototype.dateFormat = function(format) {
  let value = this;
  if (!value) {
    return '';
  } else {
    if (value.indexOf('Date') > -1) {
      var inx = value.match(/(-\d+|\d+)/)[1];
      return new Date(parseInt(inx)).format(format);
    } else {
      // return $dayjs(value).format('YYYY-MM-DD');
      value = value.replace(/-/g, '/');
      //console.log(value);

      return new Date(value).format(format);
    }
  }
};

String.prototype.replaceStr = function (index,num,str = '*') {
	// index 包含
  let replaceStr = this;
  let rpeStr = replaceStr.substr(index,num);//要替换的 str
  let _sensitive = ""
  for (let i = 0; i < num; i++) {
	  _sensitive = _sensitive+str;
  }
  return replaceStr.replace(rpeStr, _sensitive);
};

String.prototype.format = function () {
  // af{0}cd{1}er{2}sdf
  let format = this;
  var param = arguments;
  var obj = param[0];
  if (obj) {
    if (obj && typeof obj == 'object') {
      if (/\{[a-zA-Z]+\}/gi.test(format)) {
        // var m = objectTool.SearchOfRoute(mo, full, true);
        format = format.replace(/\{[a-zA-Z]+\}/gi, function (val) {
          var i = val.match(/{([a-zA-Z]+)}/)[1];
          return obj[i];
        });
      }
      return format;
    } else {
      return format.replace(/\{\d+\}/gi, function (val) {
        var i = parseInt(val.match(/{(\d+)}/)[1]);
        return param[i];
      });
    }
  }
  return format;
};


Number.prototype.dateFormat = function (format) {
  let value = this;
  return new Date(value).format(format);
};
Number.prototype.toDateFromSeconds = function () {
  return new Date(this*1000);
}
Number.prototype.MStoDate = function(){
	let s = Math.floor(this/1000) < 60 ? Math.floor(this/1000) : Math.floor((this/1000)%60),
        M = Math.floor(this/1000/60) < 60 ? Math.floor(this/1000/60) : Math.floor((this/1000/60)%60),
        h = Math.floor(this/1000/60/60) < 24 ? Math.floor(this/1000/60/60) : Math.floor((this/1000/60/60)%24),
        d = Math.floor(this/1000/60/60/24)
        // d = Math.floor(this/1000/60/60/24) < 30 ? Math.floor(this/1000/60/60/24) : Math.floor((this/1000/60/60/24)%30),
        // m = Math.floor((this/1000/60/60/24/30)) < 12 ? Math.floor((this/1000/60/60/24/30)) : Math.floor((this/1000/60/60/24/30))%12,
        // y = Math.floor(this/1000/60/60/24/30/12)
	let zhi = d == 0 ? h+":"+M+":"+s : d+"{a}"+h+"{b}"+M+"{c}"+s+"{ab}"
	return zhi
}